package org.xianyu.domain.enums;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

/**
 * 订单状态枚举，对应数据库 ENUM 字段值。
 * JSON 序列化为字符串，反序列化也支持（通过 @JsonCreator）。
 */
public enum OrderStatus {
    // 已发货
    SHIPPED,

    // 未发货
    NOT_SHIPPED,

    // 退货
    REFUNDED,

    // 收货
    DELIVERED;

    /**
     * 将枚举值转换为JSON字符串表示形式
     *
     * @return 枚举常量的名称字符串
     */
    @JsonValue
    public String toValue() {
        return this.name();
    }

    /**
     * 从JSON字符串创建订单状态枚举实例
     *
     * @param v 表示订单状态的字符串值
     * @return 对应的OrderStatus枚举实例，如果输入为null则返回null
     * @throws IllegalArgumentException 如果输入的字符串不匹配任何枚举常量
     */
    @JsonCreator
    public static OrderStatus fromValue(String v) {
        if (v == null) return null;
        return OrderStatus.valueOf(v);
    }
}

